Skip to main content

Liquidity Pool Fees and Rewards

Supplying assets to a Euclid liquidity pool entitles you to a share of the trading fees generated by that pool and, in many cases, extra incentive rewards. This guide walks through how fees accrue, how rewards are allocated, and what affects the overall return (APR) for a liquidity provider (LP).

Swap Fees

Every time a swap routes through a pool, the protocol collects a fee. A percentage of that fee is paid back to LPs pro rata based on the LP tokens they hold.

  • Fee source: Swaps submitted through the router.
  • Distribution: Collected fees are added to the pool’s reserves, increasing the value of every LP share.
  • Tracking: Use the [VLP Fee](../../API Reference/GQL/VLP/Fee.md) or [VLP Total Fees Collected](../../API Reference/GQL/VLP/Total%20Fees%20Collected.md) queries to monitor how much a pool has generated over time.

Because fees compound into the pool, LP token value grows without any action required from the LP.

Liquidity Incentives

Protocols or partner projects may offer additional token rewards to bootstrap liquidity. These incentives are typically distributed on top of swap fees.

  • Reward tokens: Issued in native Euclid assets or external partner tokens.
  • Distribution cadence: Frequently streamed block-by-block or claimable on a schedule.
  • Discovery: Check campaign announcements or the pool metadata for active incentive programs.

Incentive rewards are separate from swap fees and may require a claim transaction, depending on how the program is configured.

Calculating LP Returns

An LP’s return comes from swap fees plus any incentives received. A simplified APR illustration:

Fee APR=(fees_collected_over_periodpool_liquidity_value)×periods_per_year\text{Fee APR} = \left( \frac{\text{fees\_collected\_over\_period}}{\text{pool\_liquidity\_value}} \right) \times \text{periods\_per\_year} Reward APR=(reward_value_over_periodpool_liquidity_value)×periods_per_year\text{Reward APR} = \left( \frac{\text{reward\_value\_over\_period}}{\text{pool\_liquidity\_value}} \right) \times \text{periods\_per\_year} Total APR=Fee APR+Reward APR\text{Total APR} = \text{Fee APR} + \text{Reward APR}

To gather the inputs:

query Liquidity($contract: String) {
vlp(contract: $contract) {
liquidity {
pair {
token_1
token_2
}
token_1_reserve
token_2_reserve
total_lp_tokens
}
}
}
  • liquidity.token_*_reserve shows the current pool value.
  • liquidity.total_lp_tokens is the denominator for each LP’s share.
  • liquidity.pair lets you map reserves to the specific assets involved.

For fee data, combine the reserves with the [VLP Total Fees Collected](../../API Reference/GQL/VLP/Total%20Fees%20Collected.md) and [VLP Total Fees Denom](../../API Reference/GQL/VLP/Total%20Fees%20Denom.md) queries, which expose cumulative fees per pool (and optionally per token denomination). Factor those totals into your APR calculations alongside any incentive rewards earned over the analysis window.

Combine these values with your LP share (user_lp_balance / total_lp_tokens) and the time window analyzed to estimate actual performance.

Why APRs Differ Between Pools

APR is not uniform across pools because each has unique market dynamics:

  • Trading volume: Higher volume generates more swap fees for LPs.
  • Fee configuration: Stable pairs often charge lower fees than volatile pairs.
  • Incentive programs: Pools with active rewards deliver higher effective APR.
  • Impermanent loss: Returns can be offset by relative price movements of the paired assets.

Evaluate these factors before providing liquidity to understand potential risk and reward.

Monitoring Performance

Keep LPs informed by periodically querying pool stats:

  • VLP Liquidity and VLP Fee for pool-wide metrics.
  • LP Balance for each wallet’s LP token holdings.
  • Historical snapshots (volume, fees, incentives) from your analytics backend for trend lines.

Surfacing these metrics in your dApp helps users make informed decisions about where to allocate liquidity.